package com.jyxd.web.dao.basic;

import com.jyxd.web.data.basic.MedOrderExec;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface MedOrderExecDao {

    /**
     * 新增一条医嘱执行表记录
     *
     * @param medOrderExec
     * @return boolean
     */
    boolean insert(MedOrderExec medOrderExec);

    /**
     * 根据创建时间删除部分数据
     *
     * @param map
     * @return
     */
    boolean deleteByCreateTime(Map<String, Object> map);

    /**
     * 批量添加
     *
     * @param list
     * @return
     */
    // todo 使用时需调试  （未成功）
    boolean insertBatch(List<MedOrderExec> list);

    /**
     * 根据主键id查询一条医嘱执行表记录
     *
     * @param id
     * @return MedOrderExec
     */
    MedOrderExec queryData(String id);

    /**
     * 更新一条医嘱执行表记录
     *
     * @param medOrderExec
     * @return boolean
     */
    boolean update(MedOrderExec medOrderExec);

    /**
     * 根据条件分页查询医嘱执行表记录列表
     *
     * @param map
     * @return list
     */
    List<MedOrderExec> queryList(Map<String, Object> map);

    /**
     * 根据条件查询列表总记录数
     *
     * @param map
     * @return
     */
    int queryNum(Map<String, Object> map);

    /**
     * 查询所有医嘱对象列表
     *
     * @param map
     * @return
     */
    List<MedOrderExec> queryMedOrderExecList(Map<String, Object> map);

    List<Map<String, Object>> getList(Map<String, Object> map);

    int getNum(Map<String, Object> map);

    /**
     * 根据医嘱第三方主键id查询医嘱
     *
     * @param orderCode
     * @return
     */
    MedOrderExec queryDataByOrderCode(String orderCode);

    /**
     * 根据患者id和医嘱内容查询医嘱
     *
     * @return
     */
    List<MedOrderExec> queryDataByPatientIdAndOrderName(Map<String, Object> map);

    /**
     * 根据患者id和医嘱内容查询医嘱
     *
     * @return
     */
    List<MedOrderExec> queryDataByOrderSubNo(Map<String, Object> map);

    /**
     * 根据父医嘱查询子遗嘱信息
     *
     * @return
     */
    List<MedOrderExec> querySonOrderList(Map<String, Object> map);

    List<MedOrderExec> queryByCreateTime(Map<String, Object> map);

    /**
     * 通过id查询医嘱list
     * @param idList
     * @return
     */
    List<MedOrderExec> queryListByOrderIds(@Param("idList") List<String> idList);

    /**
     * 根据患者id和医嘱名称查询唯一的医嘱时间
     * @param codeMap
     * @return
     */
    List<MedOrderExec> queryDataByPatientName(Map<String, Object> codeMap);
}
